/*************************************************************************************
 *
 *	模块名称 : 触摸屏幕的使用示例
 *	文件名称 : 02_touch.c
 *	版   本 : V1.0
 *	说   明 : 触摸屏幕的使用示例
 *	修改记录 :
 *		     版本号       日期         作者        说明
 *	         V1.0     2023-04-12      rush_long        发布
 *
 *	
 *
 *************************************************************************************/

#include <linux/input.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>

int main(int argc, const char *argv[])
{
	int fd = 0;
	struct input_event env[6];
	int x = 0;
	int y = 0;

	fd = open("/dev/input/event0", O_RDWR);								//打开相应设备文件
	if (-1 == fd)
	{
		perror("fail to open");
		return -1;
	}

	while (1)
	{
		while (1)
		{
			read(fd, &env[0], sizeof(env[0]));
			read(fd, &env[1], sizeof(env[1]));
			if (0 == env[0].type && 2 == env[0].code && 0 == env[1].type && 0 == env[1].code &&
				0 == env[4].type && 2 == env[4].code && 0 == env[5].type && 0 == env[5].code)						//判断触摸是否结束
			{
				printf("x = %d, y = %d\n", x, y);
				break;
			}

			read(fd, &env[2], sizeof(env[2]));
			read(fd, &env[3], sizeof(env[3]));
			read(fd, &env[4], sizeof(env[4]));
			read(fd, &env[5], sizeof(env[5]));

			x = env[0].value;										//拿到触摸点中心像素点的x坐标与y坐标
			y = env[1].value;
		}

		printf("======\n");
	}
	
	close(fd);														//关闭相应的文件
	
	return 0;
}
